<?php
// +----------------------------------------------------------------------
// | TwoThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016 http://www.twothink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: 苹果  593657688@qq.com <www.twothink.cn> 
// +----------------------------------------------------------------------


/*
 * @Author: 苹果  <593657688@qq.com>
 */

/**
 * select返回的数组进行整数映射转换
 *
 * @param array $map  映射关系二维数组  array(
 *                                          '字段名1'=>array(映射关系数组),
 *                                          '字段名2'=>array(映射关系数组),
 *                                           ......
 *                                       ) * @author 艺品网络 <twothink.cn>
 * @return array
 *
 *  array(
 *      array('id'=>1,'title'=>'标题','status'=>'1','status_text'=>'正常')
 *      ....
 *  )
 *
 */
function int_to_string(&$data,$map=array('status'=>array(1=>'正常',-1=>'删除',0=>'禁用',2=>'未审核',3=>'草稿'))) {
    if($data === false || $data === null ){
        return $data;
    }
    $data = (array)$data;
    foreach ($data as $key => $row){
        foreach ($map as $col=>$pair){
            if(isset($row[$col]) && isset($pair[$row[$col]])){
                $data[$key][$col.'_text'] = $pair[$row[$col]];
            }
        }
    }
    return $data;
}
/**
 * 对查询结果集进行排序
 * @access public
 * @param array $list 查询结果
 * @param string $field 排序的字段名
 * @param array $sortby 排序类型
 * asc正向排序 desc逆向排序 nat自然排序
 * @return array
 */
function list_sort_by($list,$field, $sortby='asc') {
    if(is_array($list)){
        $refer = $resultSet = [];
        foreach ($list as $i => $data)
            $refer[$i] = &$data[$field];
        switch ($sortby) {
            case 'asc': // 正向排序
                asort($refer);
                break;
            case 'desc':// 逆向排序
                arsort($refer);
                break;
            case 'nat': // 自然排序
                natcasesort($refer);
                break;
        }
        foreach ( $refer as $key=> $val)
            $resultSet[] = &$list[$key];
        return $resultSet;
    }
    return false;
}
/**
 * @title  数组键值转下标
 * @param  array  $data 数据
 * @paran  strng  $key  下标(数据中下标)
 * @paran  strng  $vaule  值(数据中下标)
 * @return array 映射后的数组
 * @author 艺品网络  593657688@qq.com <twothink.cn>
 */
function array_mapping($data,$key,$vaule = false){
    if(!is_array($data))
        return false;
    $data_name = array_column($data,$key);
    $data_vaue = $vaule ? array_column($data,$vaule) : $data;
    return array_combine($data_name,$data_vaue);
}

/**
 * 数组key大小写转换
 * @param $arr
 * @param int $case true大写  false小写
 * @return array|array[]
 */
function array_key_case($arr, $case = false)
{
    $case = $case==true ? CASE_UPPER : CASE_LOWER;
    return array_map(function($item) use($case) {
        if(is_array($item))
            $item = array_key_case($item, $case);
        return $item;
    },array_change_key_case($arr, $case));
}
/**
 * 数组value大小写转换
 * @param $array
 * @param int $case  false默认小写   true大写
 * @return array|array[]
 */
function array_value_case($array, $case = false)
{
    return array_map(function($item)  use($case) {
        if(is_array($item)) {
            return array_value_case($item,$case);
        }else{
            return $case==true?strtoupper ($item):strtolower($item);
        }
    },$array);
}